/*******************************************************************************
 * @file        hdl_auto_init.c
 * @version     v1.0.0
 * @copyright   COPYRIGHT &copy; 2023 CSG
 * @author      陈工
 * @date        2023-6-1
 * @brief
 * @attention	参考连接：https://blog.csdn.net/qq_43332314/article/details/126033631
 * Modification History
 * DATE         DESCRIPTION
 * ------------------------
 * - 2023-6-1  陈工 Created
 *******************************************************************************/

#include "hdl_auto_init.h"

#ifdef HDL_USING_AUTO_INIT

/*******************************************************************************
 * @FunctionName: start
 * @Author:       陈工
 * @DateTime:     2023年6月1日T10:14:02+0800
 * @Purpose:
 * @param:        void
 *******************************************************************************/
void start(void)
{
    return;
}
/*******************************************************************************
 * @FunctionName: INIT_EXPORT
 * @Author:       陈工
 * @DateTime:     2023年6月1日T10:14:14+0800
 * @Purpose:
 * @param:        start
 * @param:        "1"
 * @return:
 *******************************************************************************/
INIT_EXPORT(start, "1");

/*******************************************************************************
 * @FunctionName: end
 * @Author:       陈工
 * @DateTime:     2023年6月1日T10:14:18+0800
 * @Purpose:
 * @param:        void
 *******************************************************************************/
void end(void)
{
    return;
}

INIT_EXPORT(end, "6");

/*******************************************************************************
 * @FunctionName: vhdl_board_init
 * @Author:       陈工
 * @DateTime:     2023年6月1日T10:14:22+0800
 * @Purpose:      用于自动化初始设置
 * @param:        void
 *******************************************************************************/
void vhdl_board_init(void)
{

    const init_func* fn_ptr = NULL;

    for (fn_ptr = &init_start; fn_ptr < &init_end; fn_ptr++) {
        (*fn_ptr)();
    }
}
#endif
